Increasing advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to enhanced computer application in various industries. Ever more powerful server systems, which are often configured as an array of servers, are commonly provided to service requests originating from external sources such as the World Wide Web, for example.
As the amount of available electronic data grows, it becomes more important to store such data in a manageable manner that facilitates user friendly and quick data searches and retrieval. A common approach is to store electronic data in one or more databases. Today, a Data Base Management System (DBMS) can typically manage any form of data including text, images, sound and video.
In general, a typical database can be referred to as an organized collection of information with data structured such that a computer program can quickly search and select desired pieces of data, for example. Commonly, data within a database is organized via one or more tables. Such tables are arranged as a set of rows (or records). Each row consists of a set of columns (or fields). Records are commonly indexed as rows within a table and the record fields are typically indexed as columns, such that a row/column pair of indices can reference a particular datum within a table. For example, a row may store a complete data record relating to a sales transaction, a person, or a project. Likewise, columns of the table can define discrete portions of the rows that have the same general data format, wherein the columns can define fields of the records.
Queries for such tables can be constructed in accordance to a standard query language (e.g., structured query language (SQL)), to access content of a table in the database. Likewise, data can be input (e.g., imported) into the table via an external source.
A DBMS typically employs predefined (or built-in) simple scalar data types, which can refer to a category of variable that is determined by the kind of data stored in it. Typically “Simple Types”, or “Scalar Types” refer to simplest forms of data manipulated by programming/execution environment, including but not limited to Boolean, integer, float, date, time, date & time, GUID, text string, binary array and the like. For example, integer, floating point, string, decimal, date and binary are common simple data types. Recently, efforts have been directed to the definition of more complex data types that contain a richer internal structure such as a Point (containing 2 or 3 floating point coordinates), a Line (containing 2 points), or an Address (containing street, city, state, and zip properties). Such complex data types enable data management system developers or application developers to extend the type system capabilities of the data management system (e.g., DBMS). These complex data types are also commonly referred to as user-defined data types (UDTs) and they facilitate increasing the data management system's storage flexibility and management. More particularly, the functionality of a UDT affords DBMS implementers, and application developers the flexibility to create a UDT (e.g., via standard SQL statements), which are compatible with a particular database application.
In such settings, deserialization can act as a process of turning Serialized form of Complex Type Object (CTO—being a particular set of data that satisfies definition of Complex Type) into its original form, acceptable for usual manipulation within corresponding Execution Environment, such as an environment that facilitates execution of a computer program. Such Execution Environment can include Operating System, Database Management System, Operating System API, Virtual Machine, Compiler, JIT Compiler, Libraries, Memory Management, miscellaneous Runtime Support components and other components. Examples include Microsoft NET Framework, Java framework, native Windows execution environment, Microsoft SQL Server and the like.
Typically, deserialization can become costly for a variety of reasons. For example, memory resources for an entire object graph representing Complex Type Object have to be allocated, and also such graph has to be populated with the state of the object from the binary stream. Moreover, the larger a size of an object, then the higher is the cost of associated deserialization.
One major disadvantage of such approach is that amount of data processed by the system can become disproportionably large when compared to the amount of data that is requested therefrom—for example, if a Person object contains a plurality of Properties associated therewith, and only the name of that person is requested, then all associated fields would be processed merely for the purpose of obtaining the value of one. As such, manipulating Complex Type Object can become a costly process, when persisting or transmission of the Object is involved.
Therefore, there is a need to overcome the aforementioned exemplary deficiencies associated with conventional systems and devices.